/**
 * 校验服务，提供公共校验功能
 * Created by xmh on 2017/11/20.
 */

import {Injectable} from '@angular/core';

@Injectable()
export class ValidService {

  //常用正则表达式
  private static reg_isPhone = /^[1][0-9]{10}$/; //手机号
  private static reg_isEmail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; //email
  private static reg_isChar = /^[a-zA-Z]*$/; //是否为字母
  private static reg_isNum = /^\d+(\.\d+)?$/ ; //非负浮点数
  private static reg_isInt = /^0$|^[1-9]\d*$/; //整数的
  private static isCharNum = /^[a-zA-Z0-9]*$/; //是否为字母和数字
  private static reg_isTerminalId = /^\d{15}$/; //是否为终端串号
  private static reg_isBroadbandNumber = /^0(([1-9]\d)|([3-9]\d{2}))\d{8}$/;// 是否是宽带号码
  private static reg_isBroadbandRenewNumber = /^[a-zA-Z0-9]{5,16}$/;// 是否是宽带续约号码
  private static reg_isPsptID = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;//是否是身份证号码（18位）

  constructor() {
    //console.log('Hello ValidService Provider');
  }

  //判断是否为空
  public static isBlank(src: string): boolean{
    if(src){
      return false;
    }
    else{
      return true;
    }
  }

  //判断最小长度
  public static minlength(src: string, minlen: number): boolean{
    if(src){
      return src.length >= minlen ? true : false;
    }
    else{
      return false;
    }
  }

  //判断最大长度
  public static maxlength(src: string, maxlen: number): boolean{
    if(src){
      return src.length <= maxlen ? true : false;
    }
    else{
      return false;
    }
  }

  //正则表达式校验
  public static pattern(src: string, regExp: RegExp): boolean{
    return regExp.test(src);
  }

  //正则表达式校验-手机号
  public static isPhone(src: string): boolean{
    return ValidService.reg_isPhone.test(src);
  }

  //正则表达式校验-email
  public static isEmail(src: string): boolean{
    return ValidService.reg_isEmail.test(src);
  }

  //正则表达式校验-是否为字母
  public static isChar(src: string): boolean{
    return ValidService.reg_isInt.test(src);
  }

  //正则表达式校验-是否为数字，可以小数
  public static isNum(src: string): boolean{
    return ValidService.reg_isNum.test(src);
  }

  //正则表达式校验-是否为整数的
  public static isInt(src: string): boolean{
    return ValidService.reg_isInt.test(src);
  }

  //正则表达式校验-是否为终端串号
  public static isTerminalId(src: string): boolean{
    return ValidService.reg_isTerminalId.test(src);
  }
  //正则表达式校验-是否为终端串号
  public static isBroadbandNumber(src: string): boolean{
    return ValidService.reg_isBroadbandNumber.test(src);
  }
  //正则表达式校验-是否是宽带续约号码
  public static isBroadbandRenewNumber(src: string): boolean{
    return ValidService.reg_isBroadbandRenewNumber.test(src);
  }
  //正则表达式校验-是否是身份证号码（18位）
  public static isPsptID(src: string): boolean{
    return ValidService.reg_isPsptID.test(src);
  }

}
